package cn.fzkj.gulimall.product.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import java.util.Arrays;

/**
 * @DESCRIPTION
 */
@Configuration
@EnableTransactionManagement  // 开启事务
@MapperScan("cn.fzkj.gulimall.product.dao")
public class MybatisPlusConfig {

    /**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        PaginationInnerInterceptor innerInterceptor = new PaginationInnerInterceptor();
        // 超过最大数量回到第一页
        innerInterceptor.setOverflow(true);
        // 设置单页最大记录数
        innerInterceptor.setMaxLimit(500L);
        interceptor.setInterceptors(Arrays.asList(innerInterceptor));
        return interceptor;
    }
}

